#include<bits/stdc++.h>
using namespace std;
using ll=long long;
using Pr=pair<ll,ll>;
#define F(i,l,r) for(ll i=(l);i<=(r);++i)
#define G(i,r,l) for(ll i=(r);i>=(l);--i)
#define pb push_back
#define ct const
#define il inline
#define fi first
#define se second
#define mkr(A,B) make_pair((A),(B))
template<class T>
il void tomn(T&x,T ct&y){if(y<x)x=y;}
template<class T>
il void tomx(T&x,T ct&y){if(x<y)x=y;}
#define dbg(...) fprintf(stderr,__VA_ARGS__)
#define CUT dbg("=========================\n")

ct ll P=998244353;
ll qpow(ll x,ll y){
	ll r=1;
	for(;y;y>>=1,x=x*x%P)if(y&1)r=r*x%P;
	return r;
}
ll inv(ll x){return qpow(x,P-2);}
il void add2(ll&x,ll y){x+=y,x-=((-(x>=P))&P);}
il ll add(ll x,ll y){return add2(x,y),x;}
il void sub2(ll&x,ll y){x-=y,x+=((-(x<=0))&P);}
il ll sub(ll x,ll y){return sub2(x,y),x;}

ct int N=3.02e6;
int n;
char str[N];
namespace S1{
	void main(){
		F(i,1,n-1)if(str[i]==str[i+1])return;
		int ans=1;
		F(i,1,n-1)if(str[i]=='B')++ans;
		printf("%d\n",ans);
		exit(0);
	}
}

namespace S2{
	ct int N=20;
	bool vis[(1<<(N+1))|50];
	int ans;

	// void wt(int S){
	// 	F(i,0,n)dbg("%d",(S>>i)&1);
	// 	dbg(" ");
	// }

	void dfs(int S){
		int n=__lg(S);
		if(vis[S])return;
		vis[S]=1,++ans;

		// wt(S),dbg("\n");

		F(i,0,n-2){
			int x=((S>>i)&1)+2*((S>>(i+1))&1);
			if(x==2)continue;
			int T=((S>>(i+2))<<i)|(S&((1<<i)-1));
			dfs(T);
		}
	}
	void main(){
		if(n>20)return;
		ans=0;
		int S=0;
		F(i,1,n)
			S|=int(str[i]-'A')<<(i-1);
		S|=(1<<n),dfs(S),printf("%d\n",ans);
		exit(0);
	}
}

int main(){
	freopen("song.in","r",stdin);
	freopen("song.out","w",stdout);
	scanf("%s",str+1),n=strlen(str+1);
	S1::main();
	S2::main();
}